/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FichaMortalidadPacientePresentacion.java
 *
 * Created on 31-ago-2010, 11:35:04
 */

package presentacion.paciente;

import hibernate.objeto.GrupoConvivienteInformacionSocial;
import hibernate.objeto.InformacionSocial;
import hibernate.objeto.Paciente;
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;
import javax.swing.JEditorPane;
import javax.swing.JSpinner.DefaultEditor;
import logica.CapaLogica;
import logica.GrupoConvivienteInformacionSocialLogica;
import logica.InformacionSocialLogica;
import presentacion.CapaPresentacion;
import presentacion.GestionPacientePresentacion;
import presentacion.acceso.RestriccionAcceso;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.Icono;
import presentacion.utilidad.BarMenu;

/**
 *
 * @author Administrador
 */
public class InformacionSocialPacientePresentacion extends javax.swing.JDialog {

    /** Creates new form FichaMortalidadPacientePresentacion */
    public InformacionSocialPacientePresentacion(java.awt.Frame parent,
            boolean modal, InformacionSocial unaInformacionSocial) {
        super(parent, modal);

        informacionSocial = unaInformacionSocial;
        
        initComponents();
        setLocationRelativeTo(null);
        personalizarGUI();
        setearEventosQueCapturanTeclaEnterYEscape();
    }

    /**
     * Setea datos de la ventana.
     *
     */
    private void personalizarGUI() {
        //Crea la barra de menu
        this.setJMenuBar(
                BarMenu.createMenuBarInformacionSocialPacientePresentacion(this));

        if (CapaPresentacion.modoCarga) {
            ;
        } else if (CapaPresentacion.modoModificacion) {
            modoModificacion();
        } else if (CapaPresentacion.modoVisualizacion) {
            modoVisualizacion();
        }
    }

    /**
     * Setea la ventana en modo modificación.
     *
     */
    private void modoModificacion() {
        exhibirDatosEnPantalla();
    }

    /**
     * Setea la ventana en modo visualización.
     *
     */
    private void modoVisualizacion() {
        exhibirDatosEnPantalla();
        setearEstadoCampos(false);
        botonCancelar.requestFocus();
        CapaPresentacion.personalizarBotonesEnVisualizacion(textoDescriptivoVentana,
                botonAceptar, botonCancelar);
    }

    /**
     * Carga los datos de la información social del paciente en pantalla.
     *
     */
    private void exhibirDatosEnPantalla() {
        if (informacionSocial != null) {
            //Seteo del nivel de educación
            nivelDeEnsenianza.setSelectedIndex(CapaPresentacion.
                    getIndiceComboBoxPorString(
                    informacionSocial.getNivelDeEnsenianzaInformacionSocial(),
                    nivelDeEnsenianza));

            //Seteo de los ingresos
            ingresosGrupoFamiliar.getModel().setValue(Integer.valueOf(
                    informacionSocial.getIngresosTotalesInformacionSocial()));

            //Seteo de la cantidad de convivientes
            cantidadDeConvivientes.setText(
                    informacionSocial.getCantidadDeConvivientesInformacionSocial().toString());

            if (Integer.valueOf(
                    informacionSocial.getCantidadDeConvivientesInformacionSocial()) > 0) {

                //Carga y setea de los datos de los convivientes
                Vector<GrupoConvivienteInformacionSocial> grupoConviviente =
                        GrupoConvivienteInformacionSocialLogica.
                        getVectorGrupoConvivienteInformacionSocialPorIdInformacionSocial(
                        informacionSocial);

                for (int i = 0; i < grupoConviviente.size(); i++) {
                    //Agrega el panel
                    agregarPanel();
                    //Lo carga
                    Component[] panelInformacionSocialGrupoConviviente =
                        panelDatosGrupoConviviente.getComponents();

                    ((DatosGrupoConvivientePanel)
                            panelInformacionSocialGrupoConviviente[i]).
                            setVinculoPanelDatosGrupoConviviente(grupoConviviente.get(i).
                            getVinculoGrupoConvivienteInformacionSocial());

                    ((DatosGrupoConvivientePanel)
                            panelInformacionSocialGrupoConviviente[i]).
                            setOcupacionPanelDatosGrupoConviviente(grupoConviviente.get(i).
                            getOcupacionGrupoConvivienteInformacionSocial());
                }
            }
        }
    }

    /**
     * Establece la propiedad setEnabled de cada textfield.
     *
     * @param estado El estado a setear
     */
    private void setearEstadoCampos(boolean estado) {
        nivelDeEnsenianza.setEnabled(estado);
        ingresosGrupoFamiliar.setEnabled(estado);
        botonAgregarPanelGrupoConviviente.setEnabled(estado);

        if (informacionSocial != null && Integer.valueOf(
                informacionSocial.getCantidadDeConvivientesInformacionSocial()) > 0) {
            for (int i = 0; i < informacionSocial.
                    getCantidadDeConvivientesInformacionSocial(); i++) {
                //Lo carga
                Component[] panelInformacionSocialGrupoConviviente =
                        panelDatosGrupoConviviente.getComponents();

                ((DatosGrupoConvivientePanel)
                        panelInformacionSocialGrupoConviviente[i]).
                        setearEstadoCampos(false);
            }
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        botonAceptar = new javax.swing.JButton();
        botonCancelar = new javax.swing.JButton();
        textoDescriptivoVentana = new javax.swing.JLabel();
        panelPersonal = new javax.swing.JPanel();
        textoNivelDeEnsenianza = new javax.swing.JLabel();
        textoIngresosGrupoFamiliar = new javax.swing.JLabel();
        nivelDeEnsenianza = new javax.swing.JComboBox();
        ingresosGrupoFamiliar = new javax.swing.JSpinner();
        panelGrupoConviviente = new javax.swing.JPanel();
        panelGrupoConvivienteInterno = new javax.swing.JPanel();
        textoCantidadDeConvenientes = new javax.swing.JLabel();
        datosGrupoConvivienteScrollPane = new javax.swing.JScrollPane();
        panelDatosGrupoConviviente = new javax.swing.JPanel();
        botonAgregarPanelGrupoConviviente = new javax.swing.JButton();
        cantidadDeConvivientes = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Información Social");
        setMinimumSize(new java.awt.Dimension(395, 487));
        setResizable(false);

        botonAceptar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonAceptar.setForeground(Fuente.COLOR_NORMAL);
        botonAceptar.setIcon(Icono.ICONO_16_ACEPTAR);
        botonAceptar.setText("Aceptar");
        botonAceptar.setToolTipText("Agrega la información social");
        botonAceptar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarActionPerformed(evt);
            }
        });

        botonCancelar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonCancelar.setForeground(Fuente.COLOR_NORMAL);
        botonCancelar.setIcon(Icono.ICONO_16_CANCELAR);
        botonCancelar.setText("Cancelar");
        botonCancelar.setToolTipText("Cancela la operación");
        botonCancelar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarActionPerformed(evt);
            }
        });

        textoDescriptivoVentana.setFont(Fuente.FUENTE_TITULO_2);
        textoDescriptivoVentana.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVentana.setText("Ingrese los datos de la información social");
        textoDescriptivoVentana.setPreferredSize(new java.awt.Dimension(359, 20));

        panelPersonal.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Personal", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, Fuente.FUENTE_PANEL_BORDE));
        panelPersonal.setPreferredSize(new java.awt.Dimension(365, 94));

        textoNivelDeEnsenianza.setFont(Fuente.FUENTE_LABEL);
        textoNivelDeEnsenianza.setForeground(Fuente.COLOR_NORMAL);
        textoNivelDeEnsenianza.setText("Nivel de enseñanza");
        textoNivelDeEnsenianza.setPreferredSize(new java.awt.Dimension(110, 14));

        textoIngresosGrupoFamiliar.setFont(Fuente.FUENTE_LABEL);
        textoIngresosGrupoFamiliar.setForeground(Fuente.COLOR_NORMAL);
        textoIngresosGrupoFamiliar.setText("Ingresos totales del grupo familiar");
        textoIngresosGrupoFamiliar.setPreferredSize(new java.awt.Dimension(167, 14));

        nivelDeEnsenianza.setFont(Fuente.FUENTE_COMBOBOX);
        nivelDeEnsenianza.setForeground(Fuente.COLOR_NORMAL);
        nivelDeEnsenianza.setModel(CapaPresentacion.getListaDeNivelDeEducacion());
        nivelDeEnsenianza.setPreferredSize(new java.awt.Dimension(150, 20));

        ingresosGrupoFamiliar.setFont(Fuente.FUENTE_TEXTFIELD);
        ingresosGrupoFamiliar.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1)));
        ingresosGrupoFamiliar.setPreferredSize(new java.awt.Dimension(150, 20));

        javax.swing.GroupLayout panelPersonalLayout = new javax.swing.GroupLayout(panelPersonal);
        panelPersonal.setLayout(panelPersonalLayout);
        panelPersonalLayout.setHorizontalGroup(
            panelPersonalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelPersonalLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelPersonalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(textoIngresosGrupoFamiliar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoNivelDeEnsenianza, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelPersonalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(nivelDeEnsenianza, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(ingresosGrupoFamiliar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panelPersonalLayout.setVerticalGroup(
            panelPersonalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelPersonalLayout.createSequentialGroup()
                .addGroup(panelPersonalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoNivelDeEnsenianza, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(nivelDeEnsenianza, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelPersonalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoIngresosGrupoFamiliar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(ingresosGrupoFamiliar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        panelGrupoConviviente.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Grupo Conviviente", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, Fuente.FUENTE_PANEL_BORDE));
        panelGrupoConviviente.setPreferredSize(new java.awt.Dimension(359, 248));

        textoCantidadDeConvenientes.setFont(Fuente.FUENTE_LABEL);
        textoCantidadDeConvenientes.setForeground(Fuente.COLOR_NORMAL);
        textoCantidadDeConvenientes.setText("Cantidad de convivientes");
        textoCantidadDeConvenientes.setPreferredSize(new java.awt.Dimension(167, 14));

        datosGrupoConvivienteScrollPane.setBorder(null);
        datosGrupoConvivienteScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

        panelDatosGrupoConviviente.setLayout(new javax.swing.BoxLayout(panelDatosGrupoConviviente, javax.swing.BoxLayout.Y_AXIS));
        datosGrupoConvivienteScrollPane.setViewportView(panelDatosGrupoConviviente);

        botonAgregarPanelGrupoConviviente.setFont(Fuente.FUENTE_BOTON_INTERNO);
        botonAgregarPanelGrupoConviviente.setForeground(Fuente.COLOR_NORMAL);
        botonAgregarPanelGrupoConviviente.setIcon(Icono.ICONO_16_AGREGAR);
        botonAgregarPanelGrupoConviviente.setMnemonic('+');
        botonAgregarPanelGrupoConviviente.setToolTipText("Agrega los datos para agregar un conviviente");
        botonAgregarPanelGrupoConviviente.setPreferredSize(new java.awt.Dimension(42, 20));
        botonAgregarPanelGrupoConviviente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAgregarPanelGrupoConvivienteActionPerformed(evt);
            }
        });

        cantidadDeConvivientes.setFont(Fuente.FUENTE_LABEL);
        cantidadDeConvivientes.setForeground(Fuente.COLOR_NORMAL);
        cantidadDeConvivientes.setText("0");

        javax.swing.GroupLayout panelGrupoConvivienteInternoLayout = new javax.swing.GroupLayout(panelGrupoConvivienteInterno);
        panelGrupoConvivienteInterno.setLayout(panelGrupoConvivienteInternoLayout);
        panelGrupoConvivienteInternoLayout.setHorizontalGroup(
            panelGrupoConvivienteInternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelGrupoConvivienteInternoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelGrupoConvivienteInternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(datosGrupoConvivienteScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)
                    .addGroup(panelGrupoConvivienteInternoLayout.createSequentialGroup()
                        .addComponent(textoCantidadDeConvenientes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(cantidadDeConvivientes)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 82, Short.MAX_VALUE)
                        .addComponent(botonAgregarPanelGrupoConviviente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        panelGrupoConvivienteInternoLayout.setVerticalGroup(
            panelGrupoConvivienteInternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelGrupoConvivienteInternoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelGrupoConvivienteInternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoCantidadDeConvenientes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonAgregarPanelGrupoConviviente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(cantidadDeConvivientes))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(datosGrupoConvivienteScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout panelGrupoConvivienteLayout = new javax.swing.GroupLayout(panelGrupoConviviente);
        panelGrupoConviviente.setLayout(panelGrupoConvivienteLayout);
        panelGrupoConvivienteLayout.setHorizontalGroup(
            panelGrupoConvivienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelGrupoConvivienteLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panelGrupoConvivienteInterno, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelGrupoConvivienteLayout.setVerticalGroup(
            panelGrupoConvivienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelGrupoConvivienteLayout.createSequentialGroup()
                .addComponent(panelGrupoConvivienteInterno, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(149, Short.MAX_VALUE)
                .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panelGrupoConviviente, javax.swing.GroupLayout.PREFERRED_SIZE, 365, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(panelPersonal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelPersonal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelGrupoConviviente, javax.swing.GroupLayout.DEFAULT_SIZE, 338, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
        agregarOModificarInformacionSocial();
}//GEN-LAST:event_botonAceptarActionPerformed

    private void botonCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarActionPerformed
        this.dispose();
}//GEN-LAST:event_botonCancelarActionPerformed

    /**
     * Agrega/modifica la información social del paciente.
     * 
     */
    private void agregarOModificarInformacionSocial() {
        //Carga toda la información de la pantalla
        recopilarInformacion();
        Paciente paciente = GestionPacientePresentacion.getPaciente();
        if (paciente == null) {
            paciente = PacientePresentacion.getPaciente();
        }
        if (InformacionSocialLogica.agregarOModificarInformacionSocial(
                datosInformacionSocialPersonal,
                datosInformacionSocialGrupoConviviente,
                paciente)) {
            this.dispose();
        }
    }

    /**
     * Carga todos los datos ingresados en pantalla.
     * 
     */
    private void recopilarInformacion() {
        recopilarInformacionPersonal();
        recopilarInformacionGrupoConviviente();
    }

    /**
     * Recolecta la informacion del panel personal.
     *
     */
    private void recopilarInformacionPersonal() {
        datosInformacionSocialPersonal = new String[3];
        
        if (nivelDeEnsenianza.getSelectedIndex() != -1) {
            datosInformacionSocialPersonal[
                CapaLogica.INFORMACION_SOCIAL_NIVEL_DE_ENSEÑANZA] =
                nivelDeEnsenianza.getSelectedItem().toString();
        }
        datosInformacionSocialPersonal[
                CapaLogica.INFORMACION_SOCIAL_INGRESOS_GRUPO_CONVIVIENTE] =
                ingresosGrupoFamiliar.getValue().toString();
        datosInformacionSocialPersonal[
                CapaLogica.INFORMACION_SOCIAL_CANTIDAD_DE_CONVIVIENTES] =
                cantidadDeConvivientes.getText();
    }

    /**
     * Recolecta la informacion del panel grupo conviviente.
     *
     */
    private void recopilarInformacionGrupoConviviente() {
        Component[] componentesDatosGrupoConviviente =
                panelDatosGrupoConviviente.getComponents();

        datosInformacionSocialGrupoConviviente =
                new Object[componentesDatosGrupoConviviente.length][2];

        for (int i = 0; i < componentesDatosGrupoConviviente.length; i++) {
            datosInformacionSocialGrupoConviviente[i]
                    [CapaLogica.INFORMACION_SOCIAL_GRUPO_CONVIVIENTE_RELACION] =
                    ((DatosGrupoConvivientePanel)
                    componentesDatosGrupoConviviente[i]).getVinculoPanelDatosGrupoConviviente();

            datosInformacionSocialGrupoConviviente[i]
                    [CapaLogica.INFORMACION_SOCIAL_GRUPO_CONVIVIENTE_OCUPACION] =
                    ((DatosGrupoConvivientePanel)
                    componentesDatosGrupoConviviente[i]).getOcupacionPanelDatosGrupoConviviente();
        }
    }

    private void botonAgregarPanelGrupoConvivienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAgregarPanelGrupoConvivienteActionPerformed
        sumarCantidadDeConvivientes();
        agregarPanel();
}//GEN-LAST:event_botonAgregarPanelGrupoConvivienteActionPerformed

    /**
     * Agrega el panel para el ingreso de datos de un conviviente.
     * 
     */
    private void agregarPanel() {
        panelDatosGrupoConviviente.add(new DatosGrupoConvivientePanel(this));
        panelDatosGrupoConviviente.revalidate();
        panelDatosGrupoConviviente.repaint();
    }

    /**
     * Aumenta en uno la cantidad de convivientes.
     * 
     */
    public void sumarCantidadDeConvivientes() {
        int nuevaCantidad = Integer.valueOf(cantidadDeConvivientes.getText());
        nuevaCantidad = nuevaCantidad + 1;
        cantidadDeConvivientes.setText(Integer.valueOf(nuevaCantidad).toString());
    }

    /**
     * Decrementa en uno la cantidad de convivientes.
     *
     */
    public void restarCantidadDeConvivientes() {
        int nuevaCantidad = Integer.valueOf(cantidadDeConvivientes.getText());
        nuevaCantidad = nuevaCantidad - 1;
        cantidadDeConvivientes.setText(Integer.valueOf(nuevaCantidad).toString());
    }

    /**
     * Imprime la información.
     */
    public void imprimir() {
        if (informacionSocial != null) {
            JEditorPane impresion = new JEditorPane();
            impresion.setText(InformacionSocialLogica.getInformacionSocialHTML(
                    informacionSocial));
            RestriccionAcceso.Imprimir(null, true, impresion,
                GestionPacientePresentacion.getPaciente());
        }
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerEnter = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    agregarOModificarInformacionSocial();
                }
            }
        };
        //Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    dispose();
                }
            }
        };
        //Setear eventos
        nivelDeEnsenianza.addKeyListener(keyListenerEnter);
        nivelDeEnsenianza.addKeyListener(keyListenerEscape);

        ((DefaultEditor) ingresosGrupoFamiliar.getEditor()).
                getTextField().addKeyListener(keyListenerEnter);
        ((DefaultEditor) ingresosGrupoFamiliar.getEditor()).
                getTextField().addKeyListener(keyListenerEscape);

        botonAceptar.addKeyListener(keyListenerEscape);
        botonAgregarPanelGrupoConviviente.addKeyListener(keyListenerEscape);
        botonCancelar.addKeyListener(keyListenerEscape);
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonAceptar;
    private javax.swing.JButton botonAgregarPanelGrupoConviviente;
    private javax.swing.JButton botonCancelar;
    private javax.swing.JLabel cantidadDeConvivientes;
    private javax.swing.JScrollPane datosGrupoConvivienteScrollPane;
    private javax.swing.JSpinner ingresosGrupoFamiliar;
    private javax.swing.JComboBox nivelDeEnsenianza;
    private javax.swing.JPanel panelDatosGrupoConviviente;
    private javax.swing.JPanel panelGrupoConviviente;
    private javax.swing.JPanel panelGrupoConvivienteInterno;
    private javax.swing.JPanel panelPersonal;
    private javax.swing.JLabel textoCantidadDeConvenientes;
    private javax.swing.JLabel textoDescriptivoVentana;
    private javax.swing.JLabel textoIngresosGrupoFamiliar;
    private javax.swing.JLabel textoNivelDeEnsenianza;
    // End of variables declaration//GEN-END:variables
    private InformacionSocial informacionSocial;
    private String[] datosInformacionSocialPersonal;
    private Object[][] datosInformacionSocialGrupoConviviente;
}